package es.deusto.ingenieria.is.gemas;

import java.util.ArrayList;
import java.util.List;

import es.deusto.ingenieria.is.csp.formulation.Constraint;
import es.deusto.ingenieria.is.csp.formulation.Variable;

public class AllDiff extends Constraint<Gema> {

	public AllDiff(List<Variable<Gema>> variables, String name){				
		super(name, variables);
	}

	public boolean isSatisfied(Variable<Gema> variable, Gema value) {
		int nRanura = Integer.parseInt(variable.getName());
		List<Ranura> ranuras = Ranura.getRanuras();
		List<String> colores = new ArrayList<String>(4);
		int i = 0;
		int end = 0;
		if (nRanura < 4) {
			i = 0;
			end = 4;
		} else if (nRanura >= 4 && nRanura < 8) {
			i = 4;
			end = 8;
		} else if (nRanura >= 8) {
			i = 8;
			end = 12;
		}
		for (; i < end; i++) {
			Gema gema = ranuras.get(i).getValue();
			if (gema != null) {
				colores.add(gema.getColor().toString());
			}
		}
		
		if (colores.contains(value.getColor())) {
			return false;
		}
		
		for (i = 0; i < colores.size() - 1; i++) {
			for (int j = i + 1; j < colores.size(); j++) {
				if (colores.get(i).equals(colores.get(j))) {
					return false;
				}
			}
		}
		return true;
	}
}